package pr.vodafone.resources;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import pr.vodafone.dao.dto.Factura;
import pr.vodafone.service.ServiceProvider;


public class FacturaResource {
	
	private String dni;
	private String numeroTelefono;
	private int idFactura;
	
	
	public FacturaResource(String dni, String numeroTelefono, int idFactura){
		this.dni= dni;
		this.numeroTelefono= numeroTelefono;
		this.idFactura= idFactura;
	}
	
	@GET
	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
	public Factura getFactura() {
		ServiceProvider serviceProvider= new ServiceProvider();
		Factura factura = serviceProvider.obtenerFactura(dni, numeroTelefono, idFactura);
		return factura;
	}
	
	@PUT
	@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
	public Response putTodo(@Context UriInfo uriInfo, Factura factura) {
		Response res;
		if (idFactura!=factura.getIdFactura()){
			res = Response.status(409).entity("Put: Todo with " + factura.getIdFactura() +  " does not match with current factura").build();
		}else{
			res = Response.noContent().build(); // Code: 204
			ServiceProvider serviceProvider = new ServiceProvider();
			if(serviceProvider.actualizarFactura(dni, numeroTelefono, idFactura, factura)){
				res = Response.noContent().build(); // Code: 204
			}else{
				res= Response.status(404).entity("Error al editar la factura").build();
			}
			
		}
		return res;
	}
	
	@DELETE
	public void deleteTodo() {
		ServiceProvider serviceProvider = new ServiceProvider();
		serviceProvider.borrarFactura(dni, numeroTelefono, idFactura);
	}

}
